package bgai.gamelogic;

import java.util.List;
import java.util.Vector;

import bgai.ai.minimax.ChanceEvent;

/**
 * Tiro di una coppia di dadi
 * 
 *  36 diversi tiri (equiprobabili) di cui 21 tiri distinti
 */
public class Roll implements ChanceEvent {
	
	private int highDice;
	private int lowDice;
	
	
	public Roll(int dice1, int dice2) {
		if (!Backgammon.checkDice(dice1, dice2)) {
			throw new DiceException(dice1, dice2, "Dadi sbagliati");
		}
		if (dice1>dice2) {
			this.highDice = dice1;
			this.lowDice = dice2;
		} else {
			this.highDice = dice2;
			this.lowDice = dice1;
		}
		
	}
	
	public int getHighDice() {
		return highDice;
	}
	
	public int getLowDice() {
		return lowDice;
	}
	
	/**
	 * Restituisce la lista di tutti i possibili tiri
	 * @return
	 */
	public static List<Roll> allRolls() {
		List<Roll> rolls= new Vector<Roll>();
		
		for (int d1=1; d1<=6; d1++) {
			for (int d2=d1; d2<=6; d2++) {
				rolls.add(new Roll(d1, d2));
			}
		}
		
		return rolls;
	}
	
	@Override
	public double probability() {
		if (highDice==lowDice) {
			// tiro doppio
			return 1.0/36.0;
		} else {
			return 1.0/18.0;
		}
	}
	
	@Override
	public String toString() {
		return "" + highDice + "-" + lowDice;
	}
	
}
